#pragma once
/*
* STM32F030F4有5个定时器，Tim1、3、14、16、17
* 定时器分配
* 定时器1	空闲
* 定时器3	用于等待应答超时检测，亮灯、蜂鸣器时间判断,中断优先级4
* 定时器14	用于串口Modbus检测，中断优先级1
* 定时器16	用于按键扫描，看门狗喂狗,电量指示灯（State_LED），中断优先级3
* 定时器17	空闲

* 串口1		工作在发送接收模式，中断优先级2

* ADC1		软件触发转换，不使用中断
*/

/*
* 数据帧格式
* Byte 0	帧头
* Byte 1	待呼叫的AGV小车地址，可由拨码开关设置
* Byte 2	呼叫指令码，见通信协议
* Byte 3	呼叫器设备ID，在现有工作方式下，一个呼叫器盒子对应一个工位的情况下，ID=0（通信协议以该处为准）
* Byte 4	子码，在当前一个呼叫器盒子对应一个工位的情况下，子码由拨码开关设置
* Byte 5	CRC16校验码低字节
* Byte 6	CRC16校验码高字节
*/

/*
* 具体使用说明见相应版本的说明书
*/

/*
* 修改时间 2017/12/27
* 适用于AGV无线呼叫模块Ver1.0
* 版本更新
* 硬件上增加了双电源切换电路，可以在无电池的情况下工作
* 增加了AS62-TTL-1W的驱动程序，可以与LORA模块AS62-DTU兼容
* 该项目的PCB设计、代码，可以使用svn命令 svn checkout svn://120.78.81.74/Wireless_Call_Module/  获得

* 使用说明
* 拨码开关的数值均为二进制，"1"为最高位（举例:4Pin拨码开关1-4位为0101,则呼叫5号小车）
* 当4Pin和8Pin均为OFF时，进入设置模式
*	设置模式下，呼叫按键为暂存设置（不写入数据），放行为写入数据
* 4Pin的拨码开关用于设置待呼叫的AGV小车
* 2Pin的拨码开关用于设置无线呼叫盒所处的模式
*	1位
*		0-和AGV通信
*		1-和物料中心通信
*	2位
*		0-使用C50XB模块
*		1-使用E32-TTL模块
* 8Pin的拨码开关用于设置该无线呼叫盒所处的站点
*
* 状态指示灯
*	红灯为充电指示灯，需打开设备开关才能正常工作
*	蓝灯为电量指示灯，使用闪烁的频率指示电量
* 呼叫、放行指示灯
*	红灯表示呼叫对象无应答
*		（请检查周围是否有金属物体、障碍物等影响通信距离的物体，或者检查设备的无线属性设置是否与呼叫对象一直）
*	蓝灯表示呼叫对象正常应答
*	红蓝灯表示呼叫对象繁忙应答
* 蜂鸣器短响
*	表示该设备正在给呼叫对象发送指令并接受应答
*/

/*
*  之前的所有版本（项目命名为AGV_Control_BOX），由于管理不当，无记录可查，在现有库存全部售出后将不再使用
*/

#define DEFAULT_BAUDRATE	9600	//默认波特率9600

//一个计数周期是50ms
#define RX_TIMEOUT	10 //接收应答时间计数
#define LED_TIME	60   //LED亮灯时间计数
#define BEEP_SHORT_TIME	1	//蜂鸣器短响时间计数
#define BEEP_LONG_TIME	10	//蜂鸣器长响时间计数
#define RETRY 5       //最大重试次数

#define CMD_CALL 0x09     //呼叫指令码
#define CMD_BACK 0x08     //返回指令码
#define CMD_AGV_BUSY 0x89 //AGV设备忙

#define AGV_Frame_Head	0xFF	//与AGV通信的数据帧帧头
#define Centre_Frame_Head	0xFC	//与物料中心通信的数据帧帧头

//使能上电自检
//若自检失败，则蜂鸣器常响
#define POST	//使能上电自检



